在 Part 1 我們優化了背景限制取消流程以後,這兩天筆者觀察到:
電池最佳化關閉以後,偵測的提醒在開啟後不再出現針對第二點,推測即使在背景不受限制,然而有時候筆者會用關閉所有 app 的功能,如圖:
可能是在這個時候我們的 app 被 kill 掉,根據官方文件:
Android devices can restrict your app while it's in the background to preserve battery life. This can prevent trigger notifications from being displayed.
我們可以推論 app 必須常駐在背景,手動 kill 掉跟系統 kill 掉的效果是一樣的。
筆者預期讓他保持開啟就可以正常運作~
找到了這篇 Reddit 討論 Samsung 電源管理的兩種模式:永不進入休眠 & 最佳化關閉(不受限制)。
其中這串留言提到:「不受限制意味著 Android 系統以及三星本身的電池優化機制,都不能干擾此 app 的電池用量。」
如果這個留言所言如實,那麼我們前幾天讓 app 進入永不休眠的名單,Notifee 偵測到 Optimization 仍然為 true 的現象就說得通了:
同時也會驗證了筆者的推論,「理論上」我們只要不要手動 kill,app 就會一直在背景。
預期操作如下:
長按 app 圖示開啟選單:
看到畫面右下角出現一個鎖,就會變成關閉全部 app 的例外:
這邊甚至建議我們把其他電池管理機制都關掉:
We strongly suggest to turn off Adaptive battery and Put apps to sleep options per instructions below.
在連結頁面的底下,有分享要如何關閉這些設定的教學。然而筆者並未採用這些建議,理由是:
不受最佳化限制以後,通知除今天晚上外,都有正常出現,推測只要讓他在背景保持開啟就沒問題了。Android 11,並非筆者目前所使用的 12。移除掉不常用 app 的權限,如下圖。筆者擔心若關閉了這些設定,反而會導致一些非預期情形出現。
重複通知的 bug,筆者昨天重新 build 安裝在實體機後,早上確認通知的數目只有一篇,我們可以說初步已排除了。
電池最佳化無法取消的 bug,理論上只要我們維持 app 開啟就可以收到通知,雖然還未完全排除,但於此也算是到一個段落。
筆者先預告明天是本系列的最後一篇。
今天收工!